/* jshint esversion: 6 */
const path = require('path');
const htmlWebpackPlugin = require('html-webpack-plugin');
const VueLoaderPlugin = require('vue-loader/lib/plugin');

module.exports = {
    entry : path.join(__dirname, './src/main.js'),
    output : {
        path : path.join(__dirname, './dist'),
        filename : 'bundle.js'
    },
    mode: 'production',
    // development 模式下才能用 devtools 调试,production可压缩
    // mode: 'development',
    performance: {
        hints: false, // 枚举 false | "warning" | "error"
        // maxAssetSize: 500000, // 整数类型（以字节为单位）, webpack 生成的任何文件
        // maxEntrypointSize: 500000, // 整数类型（以字节为单位）, 入口起点的最大体积
        // assetFilter: function(assetFilename) {
        // // 提供资源文件名的断言函数
        // return assetFilename.endsWith('.css') || assetFilename.endsWith('.js');
        // }
    },
    plugins : [
        new htmlWebpackPlugin({
            template : path.join(__dirname, './src/index.html'),
            filename : 'index.html',
            // 引入favicon.ico，会在自动生成的html文件中用link引入图标
            favicon: path.resolve('./src/static/favicon.ico')
        }),
        new VueLoaderPlugin()
    ],
    module : {
        rules : [
            { test : /\.css$/, use : ['style-loader', 'css-loader', 'px2rem-loader?remUnit=37.5'] },
            { test : /\.less$/, use : ['style-loader', 'css-loader', 'less-loader'] },
            { test : /\.scss$/, use : ['style-loader', 'css-loader', 'sass-loader'] },
            { test : /\.(jpeg|jpg|gif|png|bmp)$/, use : 'url-loader?limit=6096&name=images/[hash:8]-[name].[ext]' },
            { test : /\.(woff|woff2|svg|eot|ttf)$/, use : 'url-loader'},
            { test : /\.js$/, use : 'babel-loader', 
                exclude : file => (
                    /node_modules/.test(file) && !/\.vue\.js/.test(file))
            },   
            { test : /\.vue$/, use : 'vue-loader'},
        ]
    }

}